package com.cy.pj.sys.dao;

import com.cy.pj.sys.pojo.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface SysUserDao {

    /**
     * 基于用户名查找用户的密码，加密盐
     *
     * @param username 查询用的用户名
     * @return 查找到的用户信息
     */
    @Select("select id,username,password,salt from sys_users where username = #{username}")
    SysUser selectByUsername(String username);

    /**
     * 基于用户id修改该用户的状态
     *
     * @param id           待修改的用户id
     * @param valid        待修改的状态值
     * @param modifiedUser 操作修改的用户名
     * @return 修改的条数
     */
    @Update("update sys_users set valid = #{valid},modifiedUser = #{modifiedUser} where id = #{id}")
    Integer updateValid(Integer id, Integer valid, String modifiedUser);

    /**
     * 添加用户信息
     *
     * @param user 封装需要添加的用户信息
     * @return 添加的条数
     */
    Integer insertUser(SysUser user);

    /**
     * 修改用户信息
     *
     * @param user 封装需要修改的用户信息
     * @return 修改的条数
     */
    Integer updateUser(SysUser user);

    /**
     * 基于当前所选用户id查找用户信息和该用户的所属部门及角色
     *
     * @param id 用户id
     * @return 查找到的用户信息
     */
    SysUser selectById(Integer id);

    /**
     * 基于条件(用户名)查找用户信息
     *
     * @param sysUser 封装查询条件
     * @return 查找到的用户信息列表
     */
    List<SysUser> selectUsers(SysUser sysUser);
}
